﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            //K1();
            //K2();
            //K3();
            //K4();
            K5();
            Console.ReadKey();
        }
        //套路： min + ran.NextDouble() * ( max - mix)
        //1、生成0-5之间的随机小数，保留两位小数（必须是2位）。
        public static void K1() {
            //Console.WriteLine(Math.Round(d,3));

            //生成0-5之间的小数
            //Console.WriteLine(ran.Next(0,5)+ran.NextDouble());
            //出现0时不会记录，要转为string字符串类型的才可以

            //能不能只要一次随机方法呢？
            //保留2位小数
            Random ran = new Random();
            for (int i = 0; i < 50; i++)
            {
                double b = 0 + ran.NextDouble() * (5 - 0);
                Console.WriteLine(b.ToString("f2"));
            }
        }
        //2、生成4-7之间的随机小数，保留两位小数。

        public static void K2() {
            Random ran = new Random();
            for (int i = 0; i < 50; i++)
            {
                double d = 4 + ran.NextDouble() * (7 - 4);
                Console.WriteLine(d.ToString("f2"));
            }
        }

        //3、生成一个随机整型数组，长度是10，内容是1~10，数组内容不重复。
        public static void K3() {
            int[] arr = new int[10];
            Random ran = new Random();
            for (int i = 0; i < arr.Length; i++)
            {
                Boolean a = true;
                int b = ran.Next(1, 11);
                for (int j = 0; j < arr.Length; j++)
                {
                    if (arr[j] == b)
                    {
                        a = false;
                    }
                }
                if (a == true)
                {
                    arr[i] = b;
                }
                else
                {
                    i--;
                }
            }
            Console.WriteLine("随机生成1-10不重复数字组成数组:");
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }
        //1、邮箱一定需要 @符号
        //2、根据 @符号分为两部分，“前半部分 @ 后半部分”，
        //	前半部分可以数字、字母、下划线、中划线、 .（符号点）。但是.（符号点）不能 用在开头也不能用在结尾；

        //       后半部分可以数字、字母、下划线、中划线、.（符号点），且符号点是必须的，至少出现一次，但不能连续出现，且符号点不能在开头，也不能在结尾。
        //	后半部分的符号点后面只能是：com、org、net、edu、mil、tv、biz、info

        //        |**编号**|**字符**|**描述**|
        //|------|------|------|
        //|1	|.	|匹配除换行符以外的所有字符|
        //|2	|\w	|[a-z0-9A-Z_] 匹配字母、数字、下画线|
        //|3	|\s	|匹配空白符（空格）|
        //|4	|\d	|[0-9] 匹配数字|
        //|5	|\b	|匹配表达式的开始或结束|
        //|6	|^	|匹配表达式的开始|
        //|7	|$	|匹配表达式的结束|

        //正则表达式中表示重复的字符

        //|**编 号**|**字 符**|**描 述**|
        //|------|------|------|
        //|1	|*	|0次或多次字符|       
        //|2	|?	|0次或1次字符|       //	前半部分可以数字、字母、下划线、中划线、 .（符号点）。但是.（符号点）不能 用在开头也不能用在结尾；
        //|3	|+	|1次或多次字符|     //  后半部分可以数字、字母、下划线、中划线、.（符号点），且符号点是必须的，至少出现一次，但不能连续出现，且符号点不能在开头，也不能在结尾。
        //|4	|{n} 	|n次字符|                  //	后半部分的符号点后面只能是：com、org、net、edu、mil、tv、biz、info
        //|5	|{n,M} 	|n到M次字符|
        //|6	|{n, }	|n次以上字符|

        //4、用户输入邮箱，请验证其合法性。

        public static void K4() {
            while (true)
            {
                Console.WriteLine("请输入一个邮箱");
                string email = Console.ReadLine();
                Regex regex = new Regex(@"^(\w)+@(\w)+(\.com|org|net|edu|mil|tv|biz|info)$");
                if (regex.IsMatch(email))
                {
                    Console.WriteLine("输入正确！");
                }
                else
                {
                    Console.WriteLine("输入错误！");
                }
            }
        }
        //5、用户输入手机号码，请验证其合法性。
        //手机号码规则：
        //  最开头+86可有可无
        //  13开头第三位是 0-9
        //  14开头第三位是 5或7
        //  15开头第三位是 0-9不包含4
        //  17开头第三位是 678中的一个
        //  18开头第三位是 0-9
        //  剩下的8位，都是0-9的数字。
        public static void K5()
        {
            Console.WriteLine("请输入一个手机号:");
            string phone = Console.ReadLine();
            if (Regex.IsMatch(phone, @"^(\+86)?((13\d{1})|(14(5|7))|(15(0-3){1})|(16(5-9){1})|(17([6-8]{1}))|(18(\d{1})))\d{8}$"))
            {
                Console.WriteLine("正确！！！");
            }
            else
            {
                Console.WriteLine("错误！！！");
            }
        }
    }
}
